Google Cloud:Cloud Runの概要について初学者向けにまとめた
初めに
Cloud Runとはコンテナの実行環境をGoogle Cloud上で構築できるサーバレスサービスになります。
第二世代も登場しており、定期的アップデートが期待できるサービスです。
スケール方法やデプロイ時の内部構造など、資格試験でも理解しておかなければならない基礎的な情報をお伝えしていくので参考にして頂けると幸いです。
Cloud Runの特徴
冒頭でお伝えした通り、コンテナをデプロイ出来るサービスになりますが、まずはCloud Runを使うメリットを紹介していきたいと思います。
サーバレス環境
サーバレスとは、Cloud Runを使用する際にユーザー(開発者側)は、インフラ部分の意識をせずに実行できるという意味になります。
インフラ部分とは、Cloud Runのプロビジョニングに関連する作業をフルマネージドでGoogle Cloud側が管理してくれるので、コンテナをデプロイするだけでサービスを開始できるという大きなメリットとなります。
比較対象としてApp Engineが存在しますが、App Engineフレキシブル環境(VMにコンテナを立てる仕様のApp Engine)ではスケールする際に分単位で時間がかかってしまうため、プロビジョニングとスケールを考慮した際にはCloud Runを選択する場合が多いようです。
※ちなみに、AppEngineスタンダード環境はスケールは秒単位で可能ですが、内部的にはサンドボックス環境での実行となるため、こちらも覚えておくことをおすすめします。
従量課金制
仕様した分だけ支払う従量課金制は他クラウドもそうですが、Cloud Runはリクエストに応じてスケールした分の料金を支払います。
0スケールにも対応していることから、その場合Cloud Run自体の料金は掛からないので、費用的なメリットも享受できそうです。(ただし付随するストレージなどは料金が発生する)
デプロイが簡単
先程もお伝えしましたが、0〜n個までの範囲でオートスケールし、管理なども必要ありません。そして、デプロイしたらすぐにURLが割り当てられアクセスが可能となり、その間も数秒単位でスケールを行ってくれます。
よって、コンテナイメージがあればすぐに本番環境を公開することができるのです。
さらにデプロイ以降のログの収集などについても自動的に行ってくれます。
( → Monitoring/Loggingと連携されています)
下記のコマンドで簡単にCloud Runにコンテナイメージをデプロイできます。
【補足】
コマンドの[サービス]について
・デプロイ先のサービスの名前を入力
・サービス名は49文字以下にする
・リージョンとプロジェクトごとに一意で命名する
リクエストベースのスケーリング
ここまでに紹介してきたスケーリング/プロビジョニング周りの特徴についてまとめます。
・使用しないアイドル状態のコンテナは自動削除する(料金節約)
・逆に増やしすぎないように、、インスタンスの最大数を制限することが可能
・ロールバック、カナリアリリースなどのプロビジョニングが可能
【補足】
・ロールバック、カナリアリリースなどのプロビジョニングが可能
→用は古いアプリのバージョンと最新のアプリのバージョンを保持できるため、最新→旧に戻したり(ロールバック)、最新(10%):旧(90%)などのようにリクエストのトラフィックを分割しながら最新バージョンに以降できるということです。
これにより、アプリのバージョニングも可能となっています。
Cloud Runの仕組み
ここからはCloud Runの内部的なアーキテクチャの説明をしていきます。
【公式から引用】
サービス
1つのアプリのエンドポイントの単位と言い換えると分かりやすいかもしれません。
すべてのサービスには、*.run.appドメインのサブドメインにHTTPSエンドポイントが用意されています。また、個別にカスタムドメインを構成することも可能です。
その他の特徴としては、WebSocket、HTTP/2(エンドツーエンド)、gRPC(エンドツーエンド)もサポートします。
そして、このサービスという枠組みの中に、次に紹介するリビジョンが存在します。
リビジョン
サービスを作成し、Cloud Runはデプロイした後リビジョンという単位で管理されます。こちらはアプリのバージョンと言い換えると分かりやすいかもしれません。
バージョンのためA-3からA-2にロールバックする、ということも可能です。
全体的にまとめた図がこちらになります。
また、実際にコードをデプロイするのはn個のコンテナになりますので、この単位でオートスケールなどをしてくれます。
まとめ
今回はCloud Runの概要について簡単にまとめました。
資格試験や実運用でもそうですが、似たようなサービスの各特徴について理解し選択する、これが重要になってくると思います。
その中でも、スケールの速さやランタイムの制約、連携されているその他リソース、、、etc
上記のようにそのサービスが得意とするものはなんなのか?、そしてその作成するサービスで譲れない機能/性能を洗い出し、選定する力を養って行きたいなと個人的にも思います。
また、学習方法としては1つの分野のGoogle Cloudサービスを先に細かく理解するよりは、まずは大きく全体の主要なサービスの機能を知り、そこから1つ1つを深掘りするような方法も個人的にはおすすめです。
最後に
前職が元パーソナルトレーナーであったため、ダイエット情報や筋トレ情報を積極的に配信したいと思っています!!IT=脳=運動=体調管理⇒全ては繋がっています。
【筋トレが続かない人へ攻略方法を伝える】
続ける方法は、筋トレで得られるメリットを体感する、これにつきるかと思います。
続かない人の気持ちを考えるとめんどくさい、時間がない、筋トレが辛い、このような事が多いのかな、と感じます。
確かに、何の目的もなく、メリットを感じられないまま筋トレという所業を継続するのは、6年以上続けている私も骨が折れるかと思います。
自分に意味のない筋トレを続けるのは誰でもキツイです。
まずは、1ヶ月本気で身体に結果として現れるくらい計画的にやってみてください。(計画はChatGPTさんに聞きましょう)
この1ヶ月が続かないんだよな〜、、、このように思うかもしれませんが、その場合はまずは目的をはっきりさせましょう。
筋トレの優先順位を上げることを意識して、自分を奮い立たせる目的を考えなくては、結果が大きく目に見えるまで継続するのはメンタル的に大変です?